import datetime


# 创建当前日期和时间的对象
now = datetime.datetime.now()
print("当前日期和时间:", now)

# 创建指定日期和时间的对象
specific_time = datetime.datetime(2024, 10, 1, 12, 30, 0)
specific_time2 = datetime.datetime(2024, 10, 31)
a=set()

print("指定日期和时间:", specific_time)
# 可用于筛选 重复的时间
a.add(specific_time)
a.add(specific_time2)
a.add(specific_time2)
print(a)

# 获取 日期和时间的各个部分
now = datetime.datetime.now()
print("年:", now.year)
print("月:", now.month)
print("日:", now.day)
print("时:", now.hour)
print("分:", now.minute)
print("秒:", now.second)
print("微秒:", now.microsecond)

# 日期和时间的格式化输出
now = datetime.datetime.now()
# 按照指定格式输出日期和时间
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的日期和时间:", formatted_time)


# 字符串转换为 datetime 对象
date_str = "2024-10-01 12:30:00"
# 将字符串转换为 datetime 对象
dt = datetime.datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print("转换后的 datetime 对象:", dt)


# datetime.date 类用于表示日期，不包含时间信息。
# 创建当前日期的对象
today = datetime.date.today()
print("当前日期:", today)

# 创建指定日期的对象
specific_date = datetime.date(2024, 10, 1)
print("指定日期:", specific_date)
# 获取日期的各个部分
today = datetime.date.today()
print("年:", today.year)
print("月:", today.month)
print("日:", today.day)


# datetime.time 类用于表示时间，不包含日期信息。
# 创建指定时间的对象
specific_time = datetime.time(12, 30, 0)
print("指定时间:", specific_time)
# 获取时间的各个部分
specific_time = datetime.time(12, 30, 0)
print("时:", specific_time.hour)
print("分:", specific_time.minute)
print("秒:", specific_time.second)
print("微秒:", specific_time.microsecond)


# datetime.timedelta 类用于表示两个日期或时间之间的差值，可用于日期和时间的计算。
start_date = datetime.date(2025, 10, 9)
end_date = datetime.date(2025, 10, 10)
# 计算日期差值
delta = end_date - start_date
print("日期差值（天）:", delta.days)

# 时间加减预算
now = datetime.datetime.now()
# 增加一天
next_day = now + datetime.timedelta(days=1)
print("一天后的日期和时间:", next_day)

# 减少一小时,一星期,一天
one_hour_ago = now - datetime.timedelta(hours=1,weeks=1,days=1)
print("一小时前的日期和时间:", one_hour_ago)


# 判断输入的年月日，是否合法
def is_valid_date(year, month, day):
    try:
        # 尝试创建一个datetime对象
        datetime.datetime(year, month, day)
        return True
    except ValueError:
        # 如果创建失败，说明日期不合法
        return False
print(is_valid_date(2005,2,29))